/*
 * Lenovo Group
 * Copyright (c) 2015-2016 All Rights Reserved.
 * 
 * Project Name:assign-tracer
 * Create Time: 2016年2月24日 下午3:36:11
 */
package com.lenovo.lmrp.server.assigntracer.facade;

import com.lenovo.lmrp.api.model.entity.TicketPO;

/**
 * 
 * @author wujin
 * @version v1.0
 */
public interface ITicketNotificationFacade {
    /**
     * use ticket.assignee to notify engineer new ticket comeid and assign to him
     * 
     * @param itsmCode
     * @param ticket
     */
    public void notifyToEngineer(String itsmCode, TicketPO ticket);

    /**
     * notify suitable engineer new ticket comein need them to grab.
     * retryCount indicates sent times, some algorithm of choicing engineer depend this value
     * 
     * @param itsmCode
     * @param ticket
     * @param retryCount retry send notification count
     */
    public void notifyToEngineerGroup(String itsmCode, TicketPO ticket, int retryCount);

    /**
     * notify site manager nobady grab ticket. Ticket process should terminate.
     * 
     * @param itsmCode
     * @param ticket
     */
    public void notifyToSiteManager(String itsmCode, TicketPO ticket);

    /**
     * notify ticket has been grabed by special user. 
     * We have some choice engineer strategys to find out suitable engineer
     * 
     * @param itsmCode
     * @param ticket
     * @param engineerID
     */
    public void completeGrab(String itsmCode, TicketPO ticket, String engineerID);
}
